Conversation
- Document covering a 4-week roadmap for stabilizing AngularAI as a professional demo application. - Include tasks documents detailing CI/Testing/Security improvements such as fixing SonarCloud job path, removing redundant executions, pinning GitHub Actions versions, and enhancing security scan integrations.
- `ingest_to_postgres.py`: Script to ingest normalized task markdown files into Post
- Adjust file paths for unpacking tasks and ADRs - Relocate `adr.md` for better doc organization
- Introduce comprehensive task sets aimed at enhancing reliability, observability, testing, security, and release engineering. - New tasks focus on structured logging, metrics exposure, E2E testing, threat modeling, semantic versioning, and automated release notes.
- Implement `AiProperties` and `AiProviderService` for AI model resolution. - Add Spring AI BOM and Ollama starter, and configure `application-local.yml` and `application-cloud.yml`. - Add compatibility bridges for Spring Boot 4. - Update Maven configuration and test scripts to use `OpenApiGeneratorTest`.
…ompts - Add prompt templates for architecture explanation and quick-add features. - Implement `StructuredOutputService` to handle JSON output with automatic retry and repair feature. - Add `QuickAddParseResult` and `ArchitectureExplainResult` DTOs for structured data handling. - Verify functionality with passing unit
…nation - Introduced new REST endpoints `/api/ai/task-quick-add/parse` and `/api/ai/architecture/explain` to handle AI-powered operations. - Implemented `AiApplicationService` for executing AI use cases. - Added integration tests for `AiController` to ensure endpoint functionality. - Enhanced centralized error handling for AI-specific exceptions with `AiExceptionHandler`. - Removed dependency suppressions and relocated existing ones. - Updated task documentation with verification steps.
- Delete Maven wrapper files and properties to clean up the project. - Introduce `DocEmbeddingRepository` for managing document embeddings in the database. - Add `MarkdownChunker` to handle markdown processing and chunking for document ingestion.
- Introduced Sprint retrospective prompt templates for AI service. - Created `RetrospectiveRequest` and `RetrospectiveResponse` DTOs to define input/output structures. - Added REST endpoint `/api/ai/retrospective` in `RetrospectiveResource`. - Implemented `RetrospectiveAiService` interface for AI model interaction. - Refactored test cases for different database profiles into distinct files. - Removed redundant test cases from `SystemControllerTest`.
…figuration - Introduce `MockitoBean` for
…tupLogger - Annotate tests with `@TestPropertySource` to specify test properties configuration. - Enhance `StartupLogger` with try-catch for error logging if system startup logging fails. - Update Playwright authentication cookie values.
- Introduce debug logs in `FlywayConfig` to track instantiation and bean creation. - Modify `V12__Create_Contact_Message_Table.sql` and `V6__add_password_recovery_tokens.sql` to use `GENERATED BY DEFAULT AS
- Deleted `SchemaValidationTest.java` to simplify test configuration. - Removed debug logging from `FlywayConfig`. - Introduced `BeanFactoryPostProcessor` for
…ngs to prevent duplicate keys and enhance compatibility, add Flyway schema configuration, and correct Envers audit table definitions.
- Remove obsolete migration scripts from the main directory. - Organize migration files under vendor-specific directories (`h2` and `postgresql`) to enhance compatibility and clarity. -
- Merged vendor-specific migrations (H2 and PostgreSQL) into unified schema. - Deleted obsolete `PostgresProfileBootTest` and redundant trace logs. - Updated test properties for `LoginCsrfTest` with active profile settings.
…st Swagger UI settings - Updated `application.properties` to enable `spring.flyway.baseline-on-migrate`.
- Enable Spring Boot Admin client and add configuration properties - Add Swagger 401 unauthorized troubleshooting guide - Clean up erroneous data from
… parameter passing.
…gging for troubleshooting.
…d relocate specific scripts for postgresql to improve organization and clarity.
- Add `pgvector` dependency to handle vector operations. - Introduce `EmbeddingService` to generate and manage document chunk embeddings. - Implement `VectorConverter` for compatibility between DB vector storage formats (Postgres and H2). - Update `DocEmbeddingRepository` and `DocChunkRepository` for semantic retrieval queries. - Enhance `ArchitectureExplainUseCase` to utilize retrieved document context. - Mark "Task-AI-ARCH-06-Embeddings-vector-retrieval-sources-in-Architecture-explain.md" as DONE.
…pdate i18n files for Architecture Q&A, and improve UI components with task analysis and assumption display in the task component.
…guration for out-of-order migrations, and applied code cleanup by removing unused imports.
…; add suppression for GRPC in dependency check.
…ingService`, update PostgreSQL config for compatibility, and complete Task-AI-ARCH-07 with robustness improvements.
…andling failures in embedding generation; add unit test for the circuit breaker logic.
…ddingService`; implement related tests and handle environmental AI errors gracefully.
…anup unused session files.
…ion in MDC and logs across backend modules.
- Refine null checks in `EmbeddingService` to improve robustness. - Add new Central Repository to IntelliJ's `jarRepositories.xml`. - Adjust project language level from `JDK_25` to `JDK_23` in `.idea/misc.xml`. - Update e2e authentication setup to bypass reCAPTCHA for testing. - Add AI-related documentation for Junie task backlog and Grafana dashboard rollout.
…ripts: - Introduce GitHub CTA button with styled appearance and responsive layout. - Implement Playwright tests for GitHub CTA button verification. - Update English and German translations for "View on GitHub". - Add shell and PowerShell scripts for running Qodana analysis using Docker.
…ections, and UI polish. - Consolidate UI polish with GitHub CTA updates into a single task. - Apply visual styling improvements for lighter, less dominant GitHub CTA. - Ensure landing cards target the correct routes. - Implement card shadows, hover polish, and section spacing enhancements. - Add optional login card refinement and animated AI background mesh. - Confirm all changes pass automated and manual verifications.
…afe notice, and improve styling. - Disable AI interaction in public mode to prevent unauthorized backend calls. - Add an informative message about the temporary unavailability of public Q&A. - Restyle footer for consistent page aesthetics. - Retain `/login` link functionality and avoid HTTP errors.
- Introduce reusable CSS variables to manage background colors. - Implement calmer background tones for architecture page.
… surface tokens and architecture hero background updates.
- Add `features-page.component` with responsive UI elements. - Introduce architecture landing page with core design elements. - Increase backend logging threshold and exclude noisy endpoints from logs. - Update translation files for enhanced language support.
| @@ -1,7 +1,7 @@ | |||
| import { TestBed, fakeAsync, tick } from '@angular/core/testing'; | |||
| import { SidenavComponent } from './sidenav.component'; | |||
| import { AuthService } from '../../services/auth.service'; | |||
| import { Router, NavigationEnd, ActivatedRoute } from '@angular/router'; | |||
| import { Router, NavigationEnd, ActivatedRoute, provideRouter } from '@angular/router'; | |||
Check notice
Code scanning / CodeQL
Unused variable, import, function or class Note test
Show autofix suggestion
Hide autofix suggestion
Copilot Autofix
AI 6 days ago
In general, unused imports should be removed to improve readability and avoid confusion about dependencies. Here, we only need to adjust the import from @angular/router to drop the unused symbol provideRouter while keeping the others (Router, NavigationEnd, ActivatedRoute) intact.
Concretely, in frontend/src/app/components/layout/sidenav.component.spec.ts, update the import on line 4 so that it only imports the actually used router-related symbols. No additional methods, imports, or definitions are needed; we are only simplifying the existing import statement. Functionality remains unchanged, as removing an unused import does not affect runtime behavior.
| @@ -1,7 +1,7 @@ | ||
| import { TestBed, fakeAsync, tick } from '@angular/core/testing'; | ||
| import { SidenavComponent } from './sidenav.component'; | ||
| import { AuthService } from '../../services/auth.service'; | ||
| import { Router, NavigationEnd, ActivatedRoute, provideRouter } from '@angular/router'; | ||
| import { Router, NavigationEnd, ActivatedRoute } from '@angular/router'; | ||
| import { provideNoopAnimations } from '@angular/platform-browser/animations'; | ||
| import { MatSnackBar } from '@angular/material/snack-bar'; | ||
| import { describe, it, expect, beforeEach, vi } from 'vitest'; |
…to copy documentation, and adjust CSRF security settings.
…for logged-in and logged-out users. - Outline design principles for different user states. - Detail required UI improvements including backgrounds, hover effects, and headers. - Provide technical implementation guidelines for Angular components. -
…ional support in retrieval service.
…al form layout standard and shared Angular component - Document global responsive form layout standard for consistent styling and maintainability. - Introduce shared FormRowComponent to reduce duplication
…esting - Apply `Propagation.REQUIRES_NEW` to key transactional methods for improved isolation. - Test `OpenAiManualConfig` with mock interactions to validate message handling. - Update `AiUsageCostService` to re-load users in new transactions for accuracy.
- Updated CSS to apply a responsive flex layout, preventing the 'To Date' field from overflowing. - Removed obsolete CSS classes and ensured the form remains inside the container. - Updated HTML to align
- Migrated form rows in Retrospective, Risk Radar, and ADR Drift to `FormRowComponent`. - Removed redundant form row styles from global `styles.css` for consistency and maintainability. - Adjusted HTML for affected components to utilize the new standardized component.
- Implement `getUserUsageSummary` to provide user-specific AI usage insights. - Introduce `UserAiUsageDto` to standardize API responses for user AI usage data. - Enhance security configurations to restrict access to AI admin endpoints. - Update
- Convert `requests` and `loading` to use Angular signals for reactivity. - Migrate admin access check to a computed signal. - Inject `DestroyRef` and utilize `takeUntilDestroyed` for subscription cleanup. - Update HTML bindings to reflect signal-based state changes.
- Added functionality to account for extra credits in AI usage calculations. - Extended `AiUsageService` with methods to add and retrieve extra credits. - Modified `AiCreditRequestService` to apply extra credits
- Implement `aiUsed` tracking for tasks in `TaskService`. - Modify `QuickAddParseResult` and related tests to handle `aiUsed` status. - Add error handling in deployment scripts to abort on Docker
| @@ -0,0 +1,86 @@ | |||
| import { Component, OnInit, signal, computed, inject, DestroyRef } from '@angular/core'; | |||
Check notice
Code scanning / CodeQL
Unused variable, import, function or class Note
Show autofix suggestion
Hide autofix suggestion
Copilot Autofix
AI 6 days ago
In general, to fix unused import issues, remove the unused symbol from the import statement (or remove the entire import line if all of its symbols are unused). This cleans up the code and can slightly improve build performance and bundle size.
For this specific file (frontend/src/app/components/ai-usage/ai-usage.component.ts), the best fix is to edit the first import statement and remove computed from the named imports from @angular/core. No other code changes are required, and this will not alter runtime behavior because computed is not referenced anywhere in the class.
Concretely:
- In line 1, change
import { Component, OnInit, signal, computed, inject, DestroyRef } from '@angular/core'; - To
import { Component, OnInit, signal, inject, DestroyRef } from '@angular/core';
No additional methods, imports, or definitions are needed.
| @@ -1,4 +1,4 @@ | ||
| import { Component, OnInit, signal, computed, inject, DestroyRef } from '@angular/core'; | ||
| import { Component, OnInit, signal, inject, DestroyRef } from '@angular/core'; | ||
| import { CommonModule } from '@angular/common'; | ||
| import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; | ||
| import { TranslateModule } from '@ngx-translate/core'; |
| import { MatTableModule } from '@angular/material/table'; | ||
| import { MatIconModule } from '@angular/material/icon'; | ||
| import { AiAdminService, AiUsageDashboard } from '../../services/ai-admin.service'; | ||
| import { AiService } from '../../services/ai.service'; |
Check notice
Code scanning / CodeQL
Unused variable, import, function or class Note
Show autofix suggestion
Hide autofix suggestion
Copilot Autofix
AI 6 days ago
In general, unused imports should be removed to keep the code clean, avoid confusion, and eliminate unnecessary dependencies. If the imported symbol is actually required, then the correct fix is instead to introduce the missing usage (e.g., inject the service and call its methods).
In this specific case, within frontend/src/app/components/ai-usage/ai-usage.component.ts, the only issue we can see is that AiService is imported on line 9 and never referenced anywhere in the provided snippet. Since we must not assume or modify code outside what is shown, and there is no usage of AiService in the snippet, the best fix is to delete AiService from the import statement on line 9. We will completely remove the line import { AiService } from '../../services/ai.service'; and leave all other code unchanged. No additional methods, variables, or imports are required.
| @@ -6,7 +6,6 @@ | ||
| import { MatTableModule } from '@angular/material/table'; | ||
| import { MatIconModule } from '@angular/material/icon'; | ||
| import { AiAdminService, AiUsageDashboard } from '../../services/ai-admin.service'; | ||
| import { AiService } from '../../services/ai.service'; | ||
| import { AuthService } from '../../services/auth.service'; | ||
| import { BaseAiComponent } from '../base/base-ai.component'; | ||
| import { AiDisabledPlaceholderComponent } from '../shared/ai-disabled-placeholder.component'; |
| import { MatIconModule } from '@angular/material/icon'; | ||
| import { AiAdminService, AiUsageDashboard } from '../../services/ai-admin.service'; | ||
| import { AiService } from '../../services/ai.service'; | ||
| import { AuthService } from '../../services/auth.service'; |
Check notice
Code scanning / CodeQL
Unused variable, import, function or class Note
Show autofix suggestion
Hide autofix suggestion
Copilot Autofix
AI 6 days ago
To fix the problem, remove the unused AuthService import from this component file. The component already uses this.authService, which is presumably provided by BaseAiComponent, so this local import is unnecessary.
Concretely, in frontend/src/app/components/ai-usage/ai-usage.component.ts, delete , AuthService from the import on line 10. No other code changes or additional imports are needed, since nothing in the snippet refers directly to AuthService by name.
| @@ -7,7 +7,6 @@ | ||
| import { MatIconModule } from '@angular/material/icon'; | ||
| import { AiAdminService, AiUsageDashboard } from '../../services/ai-admin.service'; | ||
| import { AiService } from '../../services/ai.service'; | ||
| import { AuthService } from '../../services/auth.service'; | ||
| import { BaseAiComponent } from '../base/base-ai.component'; | ||
| import { AiDisabledPlaceholderComponent } from '../shared/ai-disabled-placeholder.component'; | ||
| import { PageHeaderComponent } from '../shared/page-header/page-header.component'; |
…in page hierarchy - Document the changes to reduce visual emphasis on the GitHub CTA on the login page for clearer hierarchy. - Detail visual hierarchy improvements for login page to
…cs translations to `ROLE_ADMIN` namespace
- Removed GitHub CTA from brand logo, repositioned to footer in login page. - Adjust styling
UX / UI Change PR
Scope
Acceptance criteria (must be explicit)
What changed (systemic first)
Screens / viewports verified
UX Regression Checklist (must all be ✅)
Theme & contrast
mat-icon-button+ destructive actions)Mobile space & layout
Responsive patterns
Maintainability
!important(or justified below)Justifications (required if any)
!importantadded because: